<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Descărcare video Instagram</h1>
              <h2 class="sub c-fff f-18 fw400">
                Descărcați videoclipuri Instagram, fotografii, role, povești și
                IGTV Conținut online
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/ro/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descărcător de fotografii Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Introduceți adresa URL a FOTO Instagram mai jos
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/ro/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descărcați Instagram Reels
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Introduceți URL-ul Instagram Reels mai jos
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/ro/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descărcați povestea Instagram
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Introduceți URL-ul Instagram Stories de mai jos
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/ro/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Descărcați video IGTV
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Introduceți URL-ul Instagram IGTV de mai jos
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Preluare date, așteptați câteva secunde!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Site-ul nu vă poate procesa linkul deoarece este privat
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Datele pe care le-ați introdus nu sunt un link. Vă rugăm să
              introduceți un link valid, pentru exemplu:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Toate caracteristicile Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta este compatibil cu toate tipurile de videoclipuri
              Instagram și link-uri de imagini.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/ro">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Descărcător de videoclipuri Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta este conceput pentru a vă permite să-l descărcați
                  pe propriul dvs conținut de pe Instagram. Oferă suport pentru
                  descărcarea ambelor videoclipuri individuale și multiple de pe
                  Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/ro/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Descărcător de fotografii Instagram</h4>
                  </div>
                </nuxt-link>
                <p>
                  Descărcătorul de fotografii Instagram de la Savinginsta îl
                  face fără efort pentru a salva orice fotografii individuale
                  sau multiple, inclusiv colaje, de pe Instagram. Cu acest
                  instrument, descărcarea postării individuale imagini sau o
                  colecție de fotografii Instagram este simplă și direct.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/ro/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Descărcați Instagram Reels</h4>
                  </div>
                </nuxt-link>
                <p>
                  Aplicația Instagram Reels Downloader de la Savinginsta vă
                  permite Descărcați fără efort videoclipuri Reels din postările
                  Instagram în dispozitivul dvs., oferind o soluție simplă unde
                  Instagram în sine nu oferă suport pentru această funcție.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/ro/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>Descărcător IGTV</h4>
                  </div>
                </nuxt-link>
                <p>
                  Poveștile Instagram oferă utilizatorilor o platformă
                  distinctivă împărtășește experiențele lor zilnice prin
                  fotografii și videoclipuri cu a audienta larga. Ocazional,
                  este posibil să doriți să salvați un favorit poveste, dar
                  această funcționalitate nu este disponibilă în aplicație.
                  Savinginsta abordează această problemă oferind o soluție care
                  permite utilizatorilor să descarce și să vizualizeze cu
                  ușurință poveștile Instagram offline, asigurând că conținutul
                  memorabil nu se pierde niciodată.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/ro/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Instagram Story Viewer</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV oferă videoclipuri de lungime extinsă și, dacă nu puteți
                  vizualizați-le imediat, aveți opțiunea de a le descărca
                  Videoclipuri IGTV pe computer. Acest lucru vă permite să
                  revedeți și bucurați-vă de ele mai târziu, chiar și fără
                  internet conexiune și elimină preocupările legate de
                  conținutul IGTV fiind eliminate sau indisponibile.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Descărcați cu aplicația Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Aplicația noastră oferă o soluție rapidă și simplă pentru
                descărcare Videoclipuri Instagram, oferind videoclipuri de
                calitate HD fără filigrane.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - CEL MAI BUN INSTRUMENT DE DESCARCARE INSTAGRAM
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta iese în evidență ca un program de descărcare Instagram
              de top, conceput cu experiență pentru a descărca rapid conținut de
              înaltă calitate de pe Instagram. Când căutați cea mai eficientă
              metodă de descărcare Instagram media, Savinginsta downloader apare
              ca lider soluție terță parte.
            </p>
            <p class="f-16 c-ccc">
              Instagram, renumită ca cea mai populară aplicație de partajare a
              fotografiilor din lume, este martor la încărcarea a milioane de
              fotografii zilnic. Pentru așa momente, necesitatea unui
              descărcator de videoclipuri Instagram devine evident, oferind o
              soluție perfectă pentru nevoile dvs. imediate. Acest instrument
              este esențial pentru oricine caută să-și păstreze conținutul
              Instagram preferat în mod eficient.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Caracteristici ale Savinginsta Instagram video Downloader:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Descărcare video Instagram Rapid, ușor și sigur.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Vă puteți deconecta de la contul dvs. de Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Cu doar un clic pe buton, puteți descărca imagini Instagram și
                  videoclipuri.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Descărcați și salvați imaginile și videoclipurile la nivelul
                  maxim original definiție și calitate.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Din conturile personale, descărcați și salvați videoclipuri
                  Instagram.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Viteză mare: În acest moment, Savinginsta oferă cea mai rapidă
                  viteze de descărcare.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Cum să utilizați Savinginsta Instagram Downloader pentru a salva
                din IG
              </h3>
              <div class="note c-ccc f-16">
                Notă: Asigurați-vă că videoclipul sau fotografia de Instagram
                doriți descărcarea este dintr-un cont public.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Pasul 01:</span>
                  <span class="f-16 c-000"
                    >Copiați adresa URL a fotografiilor și videoclipurilor
                    Instagram</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">Pe aplicația Instagram:</div>
                  <div class="c-000 f-16">
                    Pentru iOS: Atingeți pentru a obține adresa URL a
                    fotografiei Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Pentru Android: dați clic deasupra postării și selectați
                    „Copiați Adresa URL Instagram”, apoi apăsați „Copiați adresa
                    URL de partajare”. Link-ul va fi copiat în clipboard.
                  </div>
                  <div class="fw700 c-000 f-16">- Pe PC/Mac:</div>
                  <div class="c-000 f-16">
                    Faceți clic dreapta pe data videoclipului sau fotografiei
                    Instagram și selectați „Copiați adresa linkului” pentru a
                    descărca conținutul Instagram desktopul dvs.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Pasul 02:</span>
                  <span class="f-16 c-000">
                    Lipiți adresa URL în Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Navigați la Savinginsta.App - Instagramul dedicat
                    descărcator.
                  </div>
                  <div class="c-000 f-16">
                    Copiați și inserați adresa URL copiată în câmpul de text
                    dat.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Pasul 03:</span>
                  <span class="f-16 c-000">Inițiază Descărcarea</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Faceți clic pe butonul „Descărcați” pentru a porni
                    videoclipul Instagram sau procesul de descărcare a
                    fotografiilor.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Informații importante de utilizare
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta este conceput în primul rând pentru descărcarea
                    de videoclipuri și imagini din propriul cont de Instagram.
                  </div>
                  <div class="c-000 f-16">
                    Acordăm prioritate confidențialității utilizatorilor și ne
                    rezervăm dreptul de a refuza serviciu dacă instrumentele
                    noastre sunt folosite pentru a le aduce atingere altora
                    confidențialitate sau pentru a accesa materiale
                    neautorizate.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Pentru o înțelegere cuprinzătoare a politicilor noastre

              <a class="fw700 c-blue" href="/terms-of-service">
                vă rugăm să citiți integral Termenii și condițiile noastre
                aici.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Instrumente</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/ro/instagram-story-download"
                      >Instagram Story Downloader</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/ro/instagram-reels-video-download"
                      >Instagram Reels Downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok Downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">A sustine</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> a lua legatura </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Legal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Termenii serviciului
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Politica de confidențialitate </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Nu suntem afiliați cu Instagram sau Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "ro",
    },
    bodyAttrs: {
      "data-lang": "ro",
    },
    title:
      "Instagram Downloader - Descărcați Instagram Video online - Savinginsta",
    meta: [
      { property: "og:locale", content: "ro" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: Descărcați cu ușurință videoclipuri, role și fotografii Instagram cu instrumentul nostru ușor de utilizat. Salvați videoclipurile Instagram rapid și în siguranță pe orice dispozitiv.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - Descărcați Instagram Video online - Savinginsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - Descărcați Instagram Video online - Savinginsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/ro" },

      {
        property: "og:description",
        content:
          "Savinginsta: Descărcați cu ușurință videoclipuri, role și fotografii Instagram cu instrumentul nostru ușor de utilizat. Salvați videoclipurile Instagram rapid și în siguranță pe orice dispozitiv.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/ro" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - Descărcați Instagram Video online - Savinginsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: Descărcați cu ușurință videoclipuri, role și fotografii Instagram cu instrumentul nostru ușor de utilizat. Salvați videoclipurile Instagram rapid și în siguranță pe orice dispozitiv.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/ro",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - Descărcați Instagram Video online - Savinginsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: Descărcați cu ușurință videoclipuri, role și fotografii Instagram cu instrumentul nostru ușor de utilizat. Salvați videoclipurile Instagram rapid și în siguranță pe orice dispozitiv.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Ce este un Instagram Video Downloader?`,
          content: `Un Instagram Video Downloader este un instrument bazat pe web conceput pentru a salva fotografii, videoclipuri și conținut IGTV Instagram pentru utilizare ulterioară. Savinginsta se remarcă ca alegere de top pentru descărcarea fără efort de conținut de pe Instagram.`,
        },
        {
          title: `Conectarea la contul meu de Instagram este necesară pentru a utiliza Savinginsta?`,
          content: `Nu, nu este nevoie să vă conectați la contul dvs. de Instagram. Savinginsta asigură descărcări sigure și anonime de pe Instagram fără a necesita informații personale.`,
        },
        {
          title: `Pot salva direct videoclipuri de pe Instagram?`,
          content: `Descărcarea directă a videoclipurilor din feedul tău Instagram sau din poveștile altora nu este posibilă prin Instagram în sine. Cu toate acestea, Savinginsta oferă o soluție simplă. Doar vizitați site-ul lor la https://savinginsta.com și urmați instrucțiunile simple furnizate.`,
        },
        {
          title: `Serviciul de descărcare video și fotografii Instagram este gratuit?`,
          content: `Da, Savinginsta oferă acest serviciu complet gratuit, fără limitări privind numărul de descărcări.`,
        },
        {
          title: `Pot descărca conținut din conturi private de Instagram?`,
          content: `Într-adevăr, Savinginsta vă permite să descărcați videoclipuri, povești și fotografii din conturi private de Instagram. Instrucțiuni detaliate sunt disponibile pe platforma lor.`,
        },
        {
          title: `Este posibil să salvați poveștile Instagram?`,
          content: `Absolut. Cu Savinginsta, puteți vizualiza și descărca orice poveste Instagram. Pur și simplu faceți clic pe cele trei puncte (⁝) din poveste, copiați linkul și inserați-l în Savinginsta pentru a începe descărcarea.`,
        },
        {
          title: `Savinginsta acceptă descărcări pe computere?`,
          content: `Da, Savinginsta este pe deplin compatibil cu computerele, permițându-vă să descărcați videoclipuri Instagram, fotografii, povești și multe altele direct pe computer.`,
        },
        {
          title: `Pot folosi Savinginsta pentru a descărca de pe Instagram pe dispozitive Android?`,
          content: `Cu siguranță. Pentru utilizatorii de Android, pur și simplu copiați linkul postării Instagram, lipiți-l în Savinginsta și salvați. Pentru mai multe detalii, vizitați ghidul lor despre descărcarea de pe Instagram pe Android.`,
        },
        {
          title: `Cum pot descărca videoclipuri și fotografii Instagram pe iPhone/iPad (iOS)?`,
          content: `Savinginsta a creat un ghid ușor de utilizat, pas cu pas, pentru descărcarea diferitelor tipuri de videoclipuri pe iPhone sau iPad. Urmați acest link pentru instrucțiuni: Descărcați videoclipuri Instagram pe iPhone.`,
        },
        {
          title: `Ce se întâmplă dacă videoclipul Instagram este redat în loc să se descarce?`,
          content: `Pentru a rezolva acest lucru, faceți clic dreapta pe videoclip și selectați „Salvare ca...” pentru a alege locația dorită de salvare, în loc să faceți clic stânga..`,
        },
        {
          title: `Unde sunt stocate videoclipurile după descărcare?`,
          content: `Videoclipurile descărcate sunt de obicei stocate în dosarul „Descărcări” atât pe dispozitivele mobile Android, cât și pe computere.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);

    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
@import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
